Skip to content

Supabase OTel Assets Package initial draft - #20265

Merged
ishleenk17 merged 11 commits into
elastic:mainfrom
ishleenk17:supabase_assets
Jul 31, 2026
Merged

Supabase OTel Assets Package initial draft#20265
ishleenk17 merged 11 commits into
elastic:mainfrom
ishleenk17:supabase_assets

Conversation

@ishleenk17

@ishleenk17 ishleenk17 commented Jul 21, 2026

Copy link
Copy Markdown
Member

Supabase OpenTelemetry Assets

3 dashboards have been developed for the metrics:

[Supabase OTel] Node & Infrastructure
[Supabase OTel] Databases & PostgreSQL
[Supabase OTel] Services & API

Some of the screenshots of the dashboards developed:

Databases & PostgreSQL
databases_postgresql

Node & Infrastructure_1
node_infra_2

Node & Infrastructure_2
node_infrastructure_1

Services & API
services_api

@github-actions

Copy link
Copy Markdown
Contributor

Elastic Docs Style Checker (Vale)

Summary: 1 suggestion found

💡 Suggestions (1): Optional style improvements. Apply when helpful.
File Line Rule Message
packages/supabase_otel/changelog.yml 1 Elastic.Versions Use 'later versions' instead of 'newer versions' when referring to versions.

The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale.

@andrewkroh andrewkroh added New Integration Issue or pull request for creating a new integration package. documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. labels Jul 21, 2026
@ishleenk17
ishleenk17 marked this pull request as ready for review July 29, 2026 16:02
@ishleenk17
ishleenk17 requested a review from a team as a code owner July 29, 2026 16:02
@ishleenk17
ishleenk17 requested a review from Copilot July 29, 2026 16:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an initial Supabase OpenTelemetry (OTel) content package under packages/supabase_otel, providing Kibana dashboard assets (plus screenshots/icons) intended to visualize Supabase metrics ingested into metrics-supabase.metrics.otel-*.

Changes:

  • Introduces the new supabase_otel package manifest, docs, changelog, and image assets.
  • Adds three Kibana dashboard saved objects for Node/Infra, Databases/PostgreSQL, and Services/API views.
  • Updates .github/CODEOWNERS to assign ownership for the new package.

Reviewed changes

Copilot reviewed 4 out of 12 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/supabase_otel/manifest.yml Defines the new content package metadata, version constraints, screenshots, icons, and dataset discovery.
packages/supabase_otel/changelog.yml Adds initial release notes entry for the new package.
packages/supabase_otel/docs/README.md Documents the dashboards included and prerequisites for data ingestion.
packages/supabase_otel/kibana/dashboard/supabase_otel-1980c4f4-952c-47f2-977e-30e7d99ca7af.json Adds the “[Supabase OTel] Node & Infrastructure” dashboard saved object.
packages/supabase_otel/kibana/dashboard/supabase_otel-964608d0-93a3-474b-a8ce-528dbf458c3b.json Adds the “[Supabase OTel] Databases & PostgreSQL” dashboard saved object.
packages/supabase_otel/kibana/dashboard/supabase_otel-c5ff5b39-42a4-442b-a944-a76e9dc7c1a8.json Adds the “[Supabase OTel] Services & API” dashboard saved object.
packages/supabase_otel/img/supabase-logo.svg Adds an icon asset for the package.
.github/CODEOWNERS Adds CODEOWNERS entry for packages/supabase_otel.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/supabase_otel/changelog.yml
Comment thread packages/supabase_otel/manifest.yml
Comment thread packages/supabase_otel/manifest.yml
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

@teresaromero teresaromero left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

leaving some comments, thanks!

Comment on lines +2 to +5
"accessControl": {
"accessMode": "default",
"owner": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"accessControl": {
"accessMode": "default",
"owner": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
},

This is a reference to your personal data. Please use elastic-package export dashoards to download the dashboards from the kibana instance you are using. This applies to all 3 dashboards.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created a PR to fix these issues elastic/elastic-package#3792

@ishleenk17 could you give a try to this branch to export these dashboards?

I've been testing it with this branch, and it works for me 🤞 .
If so, you could export the dashboards again using that elastic-package branch.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thats strange. I did use export dashboards.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even after exporting via elastic package export it adds these fields.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added the comment on other thread sorry #20265 (comment)

},
"coreMigrationVersion": "8.8.0",
"created_at": "2026-07-29T10:11:06.988Z",
"created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0",

This is also a personal reference that is stripped out when using elastic-package tool to export the dashboard.

},
"coreMigrationVersion": "8.8.0",
"created_at": "2026-07-29T10:16:49.432Z",
"created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0",

Comment on lines +2 to +5
"accessControl": {
"accessMode": "default",
"owner": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"accessControl": {
"accessMode": "default",
"owner": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

checked this offline and it appears some dashboards from other packages contain this kind of field...

for context pasting here what i found with claude. keeping it for the moment

Kibana intentionally strips accessControl on import for all users (Phase 1).

x-pack/platform/plugins/shared/security/server/saved_objects/access_control_transforms.ts:
// This is needed to strip incoming access control metadata, phase 1 for all users
const mapStream = createMapStream((obj: SavedObject) => {
  const typeSupportsAccessControl = typeRegistry.supportsAccessControl(obj.type);
  if (typeSupportsAccessControl && obj.accessControl) {
    delete obj.accessControl;   // ← runs for every import, every user
  }
  return { ...obj };
});

Fleet calls the same import pipeline with managed: true, so this strip always fires. Because accessControl is deleted before the object is written to Elasticsearch, it's never in _source — and the serializer only includes it in export output if it's in _source:

src/core/packages/saved-objects/base-server-internal/src/serialization/serializer.ts:
...(registry.isAccessControlEnabled() && _source.accessControl && {
  accessControl: _source.accessControl,   // never true for Fleet-installed objects
}),

The whole sequence:

  1. Package JSON (with or without accessControl) → Fleet importer strips it → written to ES without it → export API omits it
  2. Duplicate in Kibana as a real user → accessControl is set on create (from your user profile UID) → stored in ES → export returns it

So accessControl in package files is inert dead weight — Kibana deletes it before it ever hits the database regardless. The three untracked (1) duplicate files can be discarded, and the three committed files are correct as-is.

},
"coreMigrationVersion": "8.8.0",
"created_at": "2026-07-29T10:20:17.638Z",
"created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"created_by": "u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The docs/README.md appears to have been written by hand rather than generated from a _dev/build/docs/README.md template (the auto-generated header is absent, and there is no _dev/build/docs/ directory in the package). As a result, the structure diverges significantly from both the elastic-package archetype template and the convention established by peer OTel content packages such as cassandra_otel. The current file covers only a dashboard list and a short prerequisites note, but is missing the sections that are standard across comparable packages: an opening overview paragraph describing Supabase and the metrics scope, a Compatibility section stating which Supabase and OTel collector versions were tested, a Requirements section (Elasticsearch + Kibana), and a Setup section with the OTel collector configuration (Prometheus receiver YAML) that users need to actually route data into metrics-supabase.metrics.otel-*. Adding the _dev/build/docs/README.md template and regenerating via elastic-package build would also make future updates easier to maintain consistently.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

content packages currently don't support this auto geenrated approach.
We should add that in pakcgae spec.

Anyhow I have now updated to use that structure.
Please check

@mykola-elastic mykola-elastic left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All control panels refer to a very specific dataview Could not locate that data view (id: metrics-supabase.metrics.otel-*-446c7664adeacbec729fa3311e520a37f74c2ee9d2a39aef46e61efc1574d4cc)

@mykola-elastic

Copy link
Copy Markdown
Contributor

I've got negative CPU utilization
Screenshot 2026-07-30 at 15 18 25

Idle Rate can be above 1 which results in negative values

Screenshot 2026-07-30 at 15 21 33

@mykola-elastic

Copy link
Copy Markdown
Contributor

Now it works, but I got weird behavior when selecting a filter and switching tabs. You see there is project_ref filter

  1. I pick project filter on one dashboard
  2. I switch to other dashboard
  3. I can pick another filter there, and it is added additionally
  4. Then I switch again
Screenshot 2026-07-30 at 15 32 54 Screenshot 2026-07-30 at 15 32 00 Screenshot 2026-07-30 at 15 33 17

@mykola-elastic

Copy link
Copy Markdown
Contributor

For "Databases & PostgreSQL" first row, there is empty space on the right, as if one panel was deleted

Screenshot 2026-07-30 at 15 35 24

@mykola-elastic

Copy link
Copy Markdown
Contributor

Average users count is negative in "Services & API" dashboard

Screenshot 2026-07-30 at 15 37 07

@ishleenk17

Copy link
Copy Markdown
Member Author

Average users count is negative in "Services & API" dashboard

Screenshot 2026-07-30 at 15 37 07

Looks like the latest version of PR has not been used in the cluster. Thsi was fixed with this query:


TS metrics-supabase.metrics.otel-*
| STATS `Auth Users` = MAX(LAST_OVER_TIME(`metrics.auth_users_user_count`))
| EVAL `Auth Users` = CASE(`Auth Users` == -1, null, `Auth Users`)

@ishleenk17

ishleenk17 commented Jul 31, 2026

Copy link
Copy Markdown
Member Author

@mykola-elastic I have updated the cluster with the latest dashboards. Looks like the one you were seeing was not the latest updated integration. You can check now.

@mykola-elastic

Copy link
Copy Markdown
Contributor

@ishleenk17 thanks, most of the things are fixed now.
With auth users there is another panel just below, which still displays negative, feel free to leave it as it is
Screenshot 2026-07-31 at 10 51 06

@mergify

mergify Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@elastic-vault-github-plugin-prod

Copy link
Copy Markdown
Contributor

✅ All changelog entries have the correct PR link.

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

@ishleenk17
ishleenk17 merged commit ae3325d into elastic:main Jul 31, 2026
11 checks passed
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown
Contributor

Package supabase_otel - 0.1.0 containing this change is available at https://epr.elastic.co/package/supabase_otel/0.1.0/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. New Integration Issue or pull request for creating a new integration package.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants